7.12 实例1 提取各分组前二名记录
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.7.12 实例1 提取各分组前二名记录.xlsx")
print (df)
# t=df.groupby("班级").apply(lambda d:d.nlargest(2,"总分",keep= "all"))
t=df.groupby( "班级" ).apply( lambda d:d.nlargest(2, "总分" , keep = "all" )).droplevel( level = 0 )
#可以加 .droplevel(level=0) 来去掉索引
#此如第1名有两个同分,则取这两名,如第二名同分,则取三名
print (t)
返回:
班级 | 姓名 | 总分 | |
---|---|---|---|
0 | 3班 | 欧进兴 | 273 |
1 | 1班 | 叶翠 | 325 |
2 | 3班 | 毕红霞 | 234 |
... | ... | ... | |
38 | 3班 | 陈水平 | 161 |
39 | 3班 | 隆兴世 | 413 |
40 | 1班 | 陈秀娟 | 599 |
班级 | 姓名 | 总分 | |
---|---|---|---|
40 | 1班 | 陈秀娟 | 599 |
5 | 1班 | 曾庆文 | 591 |
28 | 1班 | 蒲菊花 | 591 |
17 | 2班 | 张晓聪 | 585 |
29 | 2班 | 徐丹平 | 504 |
15 | 3班 | 吴廷 | 557 |
9 | 3班 | 王启英 | 524 |